﻿using System.Collections.Generic;
using NHibernate;
using Neturion.Dados;
using Neturion.IRepositorios;

namespace Neturion.Repositorios
{
    public class RepositorioArquivo : IRepositorioArquivo
    {
        public Arquivo Inserir(Arquivo arquivo)
        {
            GerenciadorBDConfigs.Instance.SessaoAtual().Save(arquivo);
            return arquivo;
        }

        public Arquivo Atualizar(Arquivo arquivo)
        {
            Arquivo tmpArquivo = ObterPorId(arquivo.ArquivoId);
            // Atribuicao dos valores do objeto da memoria para o objeto obtido no banco de dados
            tmpArquivo.ChavePai = arquivo.ChavePai;
            tmpArquivo.Descricao = arquivo.Descricao;
            tmpArquivo.NomeArquivoServidor = arquivo.NomeArquivoServidor;
            tmpArquivo.NomePai = arquivo.NomePai;

            GerenciadorBDConfigs.Instance.SessaoAtual().Update(tmpArquivo);
            return tmpArquivo;
        }

        public void Excluir(Arquivo arquivo)
        {
            GerenciadorBDConfigs.Instance.SessaoAtual().Delete(arquivo);
        }

        public IList<Arquivo> ObterTodos()
        {
            ICriteria criteria = GerenciadorBDConfigs.Instance.SessaoAtual().CreateCriteria(typeof(Arquivo));
            return criteria.List<Arquivo>() as List<Arquivo>;
        }

        public Arquivo ObterPorId(int id)
        {
            return GerenciadorBDConfigs.Instance.SessaoAtual().Get<Arquivo>(id);
        }
    }
}